點選新開子網頁呈現資料細則,一般會透過QueryString方式傳遞,學習來點不一樣的!!!!
在 ASP.NET Web 網頁中跨網頁公佈(這樣操作有點小題大作就是當作練習就好)
在GridView裡面先加入了個『選取』的CommandField

再把它轉換成TemplateField並且在編輯樣板裡對LinkButton設置要外連網頁的PostBackUrl

此時GridView應該是會變成如此:
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" Height="131px" Width="280px">
            <Columns>
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="Content" HeaderText="Content" SortExpression="Content" />
                <asp:BoundField DataField="Date" DataFormatString="{0:d}" HeaderText="Date" SortExpression="Date" />
                <asp:TemplateField InsertVisible="False" ShowHeader="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select" PostBackUrl="~/Detail.aspx" Text="more"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
 </asp:GridView>
(因為自己一開始不太會操作不知道誤打誤撞才這樣亂亂來,
正規下應該是新增個TemplateField,在樣板裡新增個LinkButton
然後設定CommandName="Select",接續如上)
接著就是要設置目標網頁:
先在網頁頂部加入
<%@ PreviousPageType VirtualPath="~/來源網頁.aspx" %>
這樣就可以對來源網頁使用強型別取得裡面的資料,
加入個DetailsView1、SqlDataSourse加入連接字串,方便撈資料庫跟簡易呈現
(並沒有直接指派給DetailView但是有先編輯一下控制項的內容)

然後在Page_Load時取得前一頁的GridView資訊
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.PreviousPage != null)
    {
        GridView mygv = (GridView)<span style="background-color:#FFFF00">Page.PreviousPage.FindControl("Gridview1");</span>
        if (mygv != null)
        {
                    
            SqlDataSource1.SelectCommand = "SELECT * FROM [Table] WHERE ([Id] =" + mygv.SelectedDataKey.Value+")";
            //GridView要能取出對應的索引鍵值,檢查屬性DataKeyNames是否有對應的索引值
            DetailsView1.DataSourceID = "SqlDataSource1";
        }
    }
}
小提醒:指派DataSourceID時控制項會自動重新DataBind
這樣就不用擔心在網頁之間透漏任何資訊~~~